// function a() {
//     var obj = 1
//     return function b() {
//         return obj
//     }
// }

// let o = a()
// console.log(o())

// function test (){
//     var num = []
//     var i

//     for (i = 0; i < 10; i++) {
//         num[i] = function () {
//             console.log(i)
//         }
//     }

//     return num[9]
// }

// test()()

// var test = (function() {
//     var num = 0
//     return () => {
//         return num++
//     }
// }())

// for (var i = 0; i < 10; i++) {
//     test()
// }

// console.log(test())

function fn() {
    let name = 'kaho'
    let user = {
        getName: function() {
            return name
        }
    }
    return user
}
 
// console.log(fn().getName())

function foo(a, b) {
    console.log(b);
    return {
        foo: function (c) {
            return foo(c, a);
        }
    }
}

// var func1 = foo(0); //undefined, a = 0
// func1.foo(1); //foo(1, 0), 0
// func1.foo(2); //0
// func1.foo(3); //0
// var func2 = foo(0).foo(1).foo(2).foo(3); //undefined, 0, 1, 2 
// var func3 = foo(0).foo(1); //undefined, 0 foo(1, 0)
// func3.foo(2); //1
// func3.foo(3); //1